import Vue from 'vue'
import App from './App'
import store from './store'
import './utils/mount.js'
import utils from './utils/utils.js'
Vue.prototype.$utils=utils
// 引入全局组件
import uniNavBar from '@/components/uni-ui/uni-nav-bar/uni-nav-bar.vue'
import erButton from '@/components/er-button.vue'
import jyfParser from '@/components/jyf-parser/jyf-parser.vue'
import loading from '@/components/k-model/loading.vue'
 import uniPopup from '@/components/uni-ui/uni-popup/uni-popup.vue';
 import uniPopupMessage from '@/components/uni-ui/uni-popup/uni-popup-message.vue';
Vue.component('uni-nav-bar',uniNavBar)
Vue.component('er-button',erButton)
Vue.component('jyf-parser',jyfParser)
Vue.component('loading',loading)
Vue.component('uniPopup',uniPopup)
Vue.component('uni-popup-message',uniPopupMessage)

import md5 from 'js-md5'
Vue.prototype.$md5 = md5
import Request from '@/components/luch-request/index.js' // 请求插件
import server from "./common/server.js"; 
Vue.prototype.$baseUrl=server.serverApiUrl
Vue.prototype.$ossHost=server.serverImgUrl
const http = new Request();
http.setConfig((config) => { /* config 为默认全局配置*/
	config.baseUrl =server.serverApiUrl /* 根域名 */
	return config
})
http.interceptor.request((config, cancel) => { /* cancel 为函数，如果调用会取消本次请求。需要注意：调用cancel,本次请求的catch仍会执行。必须return config */
	let token = uni.getStorageSync('token')
	config.header = {
		...config.header,
		token
	}

	// 演示custom 用处
	// if (config.custom.auth) {
	//   config.header.token = 'token'
	// }
	/**
	/* 演示cancel 函数
	if (!token) { // 如果token不存在，调用cancel 会取消本次请求，不会进入响应拦截器，但是该函数的catch() 仍会执行
	  cancel('token 不存在', config) //  把修改后的config传入，之后响应就可以拿到修改后的config。 如果调用了cancel但是不传修改后的config，则catch((err) => {}) err.config 为request拦截器修改之前的config
	}
	**/
	return config
})
http.interceptor.response((response) => { /* 对响应成功做点什么 （statusCode === 200），必须return response*/
	//  if (response.data.code !== 200) { // 服务端返回的状态码不等于200，则reject()
	//    return Promise.reject(response) // return Promise.reject 可使promise状态进入catch
	// if (response.config.custom.verification) { // 演示自定义参数的作用
	//   return response.data
	// }
	if (response.statusCode != 200) {
    console.log('服务器异常')
		return Promise.reject(response)
	}
	// if (response.data.status != 0) {
 //    console.log(response.data.msg)
	// 	return Promise.reject(response)
	// }
	if(!response.data.data){
		//加载不到数据null转为[]
		response.data.data = []
	}
  if (response.data.code === 10010 || response.data.code === 10011) {
   
      uni.removeStorageSync("token") // 删除已经失效或过期的token（不删除也可以，因为登录后覆盖）
      uni.reLaunch({
        url:'/pages/index/index'
      })
    
  }
	return response.data
}, (response) => { /*  对响应错误做点什么 （statusCode !== 200），必须return response*/
Vue.prototype.$showToast('未联网')
console.log('服务器异常')
	console.log(response)
	return response
})
Vue.prototype.$http = http

Vue.config.productionTip = false

App.mpType = 'app'

const app = new Vue({
    ...App,
    store
})
app.$mount()
